const { Types } = require('mongoose')
const mongoose = require('./db')

const Schema = mongoose.Schema

// 权限表
const powerSchema = Schema({
    p_name:String,
    icon:String,
    p_id:{
        type:Types.ObjectId,
        ref:'power'
    },
    path:'',//跳转路由
    describe:String,//权限描述
    visible:Boolean,//企业是否可见
    sort:Number,//菜单顺序
    identification:String,//权限标识
    leave:Number//权限层级
})

// 员工表
const userSchema = Schema({
    header:String,//头像
    face:String,//人脸验证
    user:{
        type:String,
        default:'新员工'
    },//用户 名
    phone:String,//手机号
    email:'',//邮箱
    password:String,//密码
    jobNumber:String,//工号
    shape:{
        type:String,
        default:'面试'
    },//聘用形式
    b_id:{
        type:Types.ObjectId,
        ref:'branch'
    },
    Induction:{//入职时间
        type:Date,
        default:new Date()
    },
    work:{
        type:String,
        default:'在职'
    },//是否在职
    state:{//状态
        type:Boolean,
        default:true
    },
    sex:String,//性别
    date:Date//出生日期
})
// 部门
const branchSchema = Schema({
    b_name:String,
    code:String,//部门编码
    responsible:{
        type:Types.ObjectId,
        ref:'user'
    },//部门负责人
    introduction:String,//部门介绍
    b_id:{
        type:Types.ObjectId,
        ref:'branch'
    }
})
// 审批
const approvalSchema = Schema({
    type:Number,//审批类型：0，请假，1.加班，2.离职，3.调休
    new:Date,//开始时间
    end:Date,//结束时间
    reason:String,//申请原因
    u_id:{
        type:Types.ObjectId,
        ref:'user'
    },//申请人
    checker:{
        type:Types.ObjectId,
        ref:'user'
    },//审核员
    state:{
        type:Number,
        default:0
    },//0，审核中，1.已通过，-1.驳回，2：撤销
    date:{
        type:Date,
        default:new Date()
    }
})
// 权限
const powerModel = mongoose.model('power',powerSchema)
// 员工
const userModel = mongoose.model('user',userSchema)
// 部门
const branchModel = mongoose.model('branch',branchSchema)
// 申请
const approvalModel = mongoose.model('approval',approvalSchema)
module.exports = {userModel,powerModel,branchModel,approvalModel}


